Test automation systems are used to automatically test software-driven systems. Conventional architectures consist of a test harness, which is typically used to execute test cases specified by attributes of the test cases. The attributes are used to label classes or methods to mark which of the classes or methods should be examined for testing.
Conventional test harnesses usually provide some kind of functionality that is used by tests. The functionality may include, for example, logging, a way to retrieve or manipulate data about the test from the test automation system, or even perhaps a way to exchange data between machines in a multiple machine test. The use of test harness functionality by the test case has the effect of tying the test case to a specific test harness, which is undesirable.
Additionally, the test case must query the test harness for the object that provides a desired functionality, which usually requires beforehand knowledge of the test harness architecture. The variety of functionality in conventional test harnesses usually results in differences between the test harnesses such that a test is only able to run in a single test harness, which is undesirable.
In accordance with the present invention, a test harness can be reused without requiring modifications to run tests written using different test case formats.